package de.unicornEntertainment.einfacherrechner.view;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

import de.unicornEntertainment.einfacherrechner.control.ControllerEinfacherRechner;
import de.unicornEntertainment.einfacherrechner.nichtMVC.EinfacherRechner;

public class ViewEinfacherRechner extends JFrame {

	// Globale Deklaration
	private String titel;
	private JTextField eingabeZahl1;
	private JTextField eingabeZahl2;
	private JTextField ausgabeErgebnis;
	private JLabel zahl1;
	private JLabel zahl2;
	private JLabel ergebnis;
	private JButton addition;
	private JButton subtraktion;
	private JButton multiplikation;
	private JButton division;
	private JButton cleanen;
	private JPanel oberesPanel;
	private JPanel unteresPanel;
	ControllerEinfacherRechner controller;

	public ViewEinfacherRechner(
			ControllerEinfacherRechner controllerEinfacherRechner) {
		this.controller = controllerEinfacherRechner;

		initialize();

	}

	private void initialize() {

		// instanziieren
		eingabeZahl1 = new JTextField();
		eingabeZahl2 = new JTextField();
		ausgabeErgebnis = new JTextField();
		zahl1 = new JLabel("Zahl1: ");
		zahl2 = new JLabel("Zahl2: ");
		ergebnis = new JLabel("Ergebnis: ");
		addition = new JButton("+");
		subtraktion = new JButton("-");
		multiplikation = new JButton("*");
		division = new JButton("/");
		cleanen = new JButton("delete");
		oberesPanel = new JPanel();
		unteresPanel = new JPanel();

		// Werte setzen
		this.titel = titel;
		this.setBounds(0, 0, 400, 150);
		this.setLayout(new BorderLayout());
		this.setVisible(true);

		eingabeZahl1.setSize(100, 10);
		eingabeZahl2.setSize(100, 10);
		ausgabeErgebnis.setSize(100, 10);
		ausgabeErgebnis.setEditable(false);
		zahl1.setSize(50, 10);
		zahl2.setSize(50, 10);
		ergebnis.setSize(50, 10);
		addition.setSize(50, 10);
		addition.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {
				controller.addition();
			}
		});

		subtraktion.setSize(50, 10);
		subtraktion.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {
				controller.subtraktion();
			}
		});
		multiplikation.setSize(50, 10);
		multiplikation.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {
				controller.multiplikation();
			}
		});

		division.setSize(50, 10);
		division.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {
				
			}
		});
		cleanen.setSize(50, 10);
		cleanen.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent arg0) {
				eingabeZahl1.setText("");
				eingabeZahl1.setBackground(Color.WHITE);
				eingabeZahl2.setText("");
				eingabeZahl2.setBackground(Color.WHITE);
				ausgabeErgebnis.setText("");
			}
		});
		oberesPanel.setLayout(new GridLayout(3, 2));
		oberesPanel.setSize(600, 150);

		// Objekte zusammensetzen
		oberesPanel.add(zahl1);
		oberesPanel.add(eingabeZahl1);
		oberesPanel.add(zahl2);
		oberesPanel.add(eingabeZahl2);
		oberesPanel.add(ergebnis);
		oberesPanel.add(ausgabeErgebnis);

		unteresPanel.setLayout(new GridLayout());
		unteresPanel.setSize(600, 150);
		unteresPanel.add(addition);
		unteresPanel.add(subtraktion);
		unteresPanel.add(multiplikation);
		unteresPanel.add(division);
		unteresPanel.add(cleanen);

		this.add(unteresPanel, BorderLayout.SOUTH);
		this.add(oberesPanel, BorderLayout.CENTER);
		this.validate();

	}

	public String getZahl1() {
		return eingabeZahl1.getText();
	}

	public String getZahl2() {
		return eingabeZahl2.getText();
	}

	public void setErgebnis(String ergebnis) {
		ausgabeErgebnis.setText(ergebnis);
	}

	public void fehlerZahl1() {
		eingabeZahl1.setBackground(Color.RED);
	}

	public void fehlerZahl2() {
		eingabeZahl2.setBackground(Color.RED);
	}

	public void showError(String string) {
		new JOptionPane().showMessageDialog(unteresPanel, string);
	}

}
